﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AcadPos.Entity;
using TrustX.Dados;
using System.Data;

namespace AcadPos.Data
{
    public class DBCurriculo
    {
        #region Inserir
        public bool inserir(Curriculo curriculo, string usuario)
        {
            string SQL = @"INSERT INTO TB_CURRICULO
                                  (
                                    ID_CURSO,
                                    CURRICULO,
                                    SITUACAO,
                                    DATA_CADASTRO
                                  )
                                VALUES
                                  (
                                    @ID_CURSO,
                                    @CURRICULO,
                                    @SITUACAO,
                                    GETDATE()
                                  )";

            DataAccess db = new DataAccess(SQL);
            db.AddParam("@ID_CURSO", SqlDbType.Int, curriculo.IdCurso);
            db.AddParam("@CURRICULO", SqlDbType.Int, curriculo.CodCurriculo);
            db.AddParam("@SITUACAO", SqlDbType.VarChar, curriculo.Situacao);
            //return db.ExecuteNonQuery();

            bool inseriu = db.ExecuteNonQuery();

            if (inseriu)
            {
                SQL = @"INSERT INTO TB_AUDITORIA
                                  (
                                    ACAO,
                                    TABELA,
                                    DESCRICAO,
                                    USUARIO,
                                    DATA                                    
                                  )
                                VALUES
                                  (                                  	
                                    'INSERT',
                                    'TB_CURRICULO',
                                    ((SELECT CAST(MAX(ID_CURRICULO) AS VARCHAR) FROM TB_CURRICULO)
                                    + ' | ' + CAST(@ID_CURSO AS VARCHAR) 
                                    + ' | ' + CAST(@DESCRICAO AS VARCHAR)
                                    + ' | ' + UPPER(@SITUACAO)),
                                    UPPER(@USUARIO),
                                    GETDATE()
                                  )";

                db = new DataAccess(SQL);
                
                db.AddParam("@ID_CURSO", SqlDbType.Int, curriculo.IdCurso);
                db.AddParam("@DESCRICAO", SqlDbType.Int, curriculo.CodCurriculo);
                db.AddParam("@SITUACAO", SqlDbType.VarChar, curriculo.Situacao);
                db.AddParam("@USUARIO", SqlDbType.VarChar, usuario);
            }
            db.ExecuteNonQuery();
            return inseriu;
        }
        #endregion

        #region Alterar
        public bool alterar(Curriculo curriculo, string usuario)
        {
            string SQL = @"   UPDATE   TB_CURRICULO
                                SET     ID_CURSO = @ID_CURSO,
                                        CURRICULO = @CURRICULO,
                                        SITUACAO = @SITUACAO
                                WHERE  ID_CURRICULO = @ID_CURRICULO";

            DataAccess db = new DataAccess(SQL);
            db.AddParam("@ID_CURSO", SqlDbType.Int, curriculo.IdCurso);
            db.AddParam("@CURRICULO", SqlDbType.SmallInt, curriculo.CodCurriculo);
            db.AddParam("@SITUACAO", SqlDbType.VarChar, curriculo.Situacao);
            db.AddParam("@ID_CURRICULO", SqlDbType.Int, curriculo.IdCurriculo);
            //return db.ExecuteNonQuery();

            bool atualizou = db.ExecuteNonQuery();

            if (atualizou)
            {
                SQL = @"INSERT INTO TB_AUDITORIA
                                  (
                                    ACAO,
                                    TABELA,
                                    DESCRICAO,
                                    USUARIO,
                                    DATA                                    
                                  )
                                VALUES
                                  (                                  	
                                    'UPDATE',
                                    'TB_CURRICULO',
                                    (CAST(@ID_CURRICULO AS VARCHAR)
                                    + ' | ' + CAST(@ID_CURSO AS VARCHAR) 
                                    + ' | ' + CAST(@DESCRICAO AS VARCHAR)
                                    + ' | ' + UPPER(@SITUACAO)),
                                    UPPER(@USUARIO),
                                    GETDATE()
                                  )";

                db = new DataAccess(SQL);
                db.AddParam("@ID_CURRICULO", SqlDbType.Int, curriculo.IdCurriculo);
                db.AddParam("@ID_CURSO", SqlDbType.Int, curriculo.IdCurso);
                db.AddParam("@DESCRICAO", SqlDbType.Int, curriculo.CodCurriculo);
                db.AddParam("@SITUACAO", SqlDbType.VarChar, curriculo.Situacao);
                db.AddParam("@USUARIO", SqlDbType.VarChar, usuario);
            }
            db.ExecuteNonQuery();
            return atualizou;
        }
        #endregion

        #region Excluir
        public bool excluir(Curriculo curriculo, string usuario)
        {
            string SQL = @"DELETE 
                                FROM   TB_CURRICULO
                                WHERE  ID_CURRICULO = @ID_CURRICULO";

            DataAccess db = new DataAccess(SQL);
            db.AddParam("@ID_CURRICULO", SqlDbType.Int, curriculo.IdCurriculo);
            //return db.ExecuteNonQuery();

            bool inseriu = db.ExecuteNonQuery();

            if (inseriu)
            {
                SQL = @"INSERT INTO TB_AUDITORIA
                                  (
                                    ACAO,
                                    TABELA,
                                    DESCRICAO,
                                    USUARIO,
                                    DATA                                    
                                  )
                                VALUES
                                  (                                  	
                                    'DELETE',
                                    'TB_CURRICULO',
                                    (CAST(@ID_CURRICULO AS VARCHAR)
                                    + ' | ' + CAST(@ID_CURSO AS VARCHAR) 
                                    + ' | ' + CAST(@DESCRICAO AS VARCHAR)
                                    + ' | ' + UPPER(@SITUACAO)),
                                    UPPER(@USUARIO),
                                    GETDATE()
                                  )";

                db = new DataAccess(SQL);
                db.AddParam("@ID_CURRICULO", SqlDbType.Int, curriculo.IdCurriculo);
                db.AddParam("@ID_CURSO", SqlDbType.Int, curriculo.IdCurso);
                db.AddParam("@DESCRICAO", SqlDbType.Int, curriculo.CodCurriculo);
                db.AddParam("@SITUACAO", SqlDbType.VarChar, curriculo.Situacao);
                db.AddParam("@USUARIO", SqlDbType.VarChar, usuario);
            }
            db.ExecuteNonQuery();
            return inseriu;
        }
        #endregion

        #region Lista Curriculo por Curso
        public DataTable listaCurriculoPorCurso(Curriculo curriculo)
        {
            string SQL = @"SELECT  tc.ID_CURRICULO,
                                   tc.ID_CURSO,
                                   tc.CURRICULO,
                                   tc.SITUACAO,
                                   CASE LTRIM(RTRIM(tc.SITUACAO))
                                        WHEN 'A' THEN CONVERT(VARCHAR, tc.CURRICULO) + ' (Ativo)'
                                        WHEN 'I' THEN CONVERT(VARCHAR, tc.CURRICULO) + ' (Inativo)'
                                   END           AS COD_CURRICULO_SITUACAO
                            FROM   TB_CURRICULO tc
                            WHERE  tc.ID_CURSO = @ID_CURSO";

            DataAccess db = new DataAccess(SQL);
            db.AddParam("@ID_CURSO", SqlDbType.Int, curriculo.IdCurso);
            return db.GetDataTable();
        }
        #endregion

        #region Verificar Curriculo por Curso
        public DataTable curriculoJaExiste(Curriculo curriculo)
        {
            string SQL = @"SELECT  tc.ID_CURRICULO,
                           tc.ID_CURSO,
                           tc.CURRICULO,
                           tc.SITUACAO

                    FROM   TB_CURRICULO tc
                    
                    WHERE  tc.ID_CURSO = @ID_CURSO and
							tc.CURRICULO = @CURRICULO ";

            DataAccess db = new DataAccess(SQL);
            db.AddParam("@ID_CURSO", SqlDbType.Int, curriculo.IdCurso);
            db.AddParam("@CURRICULO", SqlDbType.Int, curriculo.CodCurriculo);
            return db.GetDataTable();
        }
        #endregion
    }
}
